This page last changed on Nov 30, 2004 by jcarreira.
  • iterator
  • generator
  • append
  • subset
  • merge
  • sort

Iterator 将在一个值上进行迭代. 迭代值可以是下列类型之一: java.util.Collection, java.util.Iterator, java.util.Enumeration, java.util.Map, 数组.

示例:
<ww:iterator value="days">
   <p>day is: <ww:property/></p>
 </ww:iterator>
 

上面的例子中调用值栈中当前对象的getDays()方法去的迭代值并进行迭代. <ww:property/>标签输出了迭代当前值.

下面的例子中使用BeanTag并将它放入ActionContext. Iterator标签从ActionContext中获取对象并调用getDays(). 属性status用来创建一个IteratorStatus对象, 本例中使用它的odd()方法来实改变行颜色:
<ww:bean name="com.opensymphony.webwork.example.IteratorExample" id="it">
   <ww:param name="day" value="'foo'"/>
   <ww:param name="day" value="'bar'"/>
 </ww:bean>

 <table border="0" cellspacing="0" cellpadding="1">
 <tr>
   <th>Days of the week</th>
 </tr>

 <ww:iterator value="#it.days" status="rowstatus">
   <tr>
     <ww:if test="#rowstatus.odd == true">
       <td style="background: grey"><ww:property/></td>
     </ww:if>
     <ww:else>
       <td><ww:property/></td>
     </ww:else>
   </tr>
 </ww:iterator>
 </table>

下一个例子进一步演示了status属性的作用, 通过OGNL从活动中取出对象DAO, 使用DAO迭代组和组包含的用户(在一个安全环境中). 方法last()表示当前对象是否是迭代中最后一个对象, 如果不是, 需要使用逗号把用户分开:

<webwork:iterator value="groupDao.groups" status="groupStatus">
    <tr class="<webwork:if test="#groupStatus.odd == true ">odd</webwork:if><webwork:else>even</webwork:else>">
        <td><webwork:property value="name" /></td>
        <td><webwork:property value="description" /></td>
        <td>
            <webwork:iterator value="users" status="userStatus">
                <webwork:property value="fullName" /><webwork:if test="!#userStatus.last">,</webwork:if>                
            </webwork:iterator>
        </td>
    </tr>
</webwork:iterator>

下一个例子迭代一个活动的集合, 并将每个迭代值传递给另一个活动.

<ww:action name="entries" id="entries"/>
<ww:iterator value="#entries.entries" >
   <ww:property value="name" />
   <ww:property />
   <ww:push value="..."/>

   <ww:action name="edit" id="edit" >
     <ww:param name="entry" value="[0]" />
   </ww:action>
</ww:iterator>

这里的窍门是使用了操作符'[:0]'. 它获取当前值并传递给活动edit. '[:0]'操作符与<ww:property />的效果一样. (当然, 这个标签不能用在param标签中).
参见OS:WebWork2 EL.

Document generated by Confluence on Dec 14, 2004 16:36